namespace UniversalAdmin.Domain.Repositories;

public interface IRepositories<T>
{
    //Table 提供了对数据库表的查询能力
    IQueryable<T> Table { get; }
    Task<IEnumerable<T>> GetAllAsync();

    Task<T?> GetByIdAsync(Guid id);

    Task<T> CreateAsync(T entity);

    Task UpdateAsync(T entity);

    Task DeleteAsync(T entity);
    Task<IQueryable<T>> GetPagedAsync(int pageIndex, int pageSize);

    Task<long> GetCountAsync();
    
    // 根据用户名查询用户（仅适用于User实体）
    Task<T?> GetByUsernameAsync(string username);
}
